package com.aimei.user.generator;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.converts.MySqlTypeConvert;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

public class CustomGenerator {
       public static void main(String[] args) throws InterruptedException {
              AutoGenerator mpg = new AutoGenerator();
              // 全局配置
              GlobalConfig gc = new GlobalConfig();
              gc.setOutputDir("E://ss/aimei-server/user-server/src/main/java");//设置存储地址
             /* URL url = CustomGenerator.class.getClassLoader().getResource("");
              String urlPath = url.getPath().substring(0, 74) + "/src/main/java/";*/
              //gc.setOutputDir(urlPath);//设置存储地址
              gc.setFileOverride(true);//是否覆盖源文件
              gc.setActiveRecord(true);
              gc.setEnableCache(true);// XML 二级缓存
              gc.setBaseResultMap(true);// XML ResultMap
              gc.setBaseColumnList(true);// XML columList
              gc.setAuthor("xiah");
              // 自定义文件命名，注意 %s 会自动填充表实体属性！
              gc.setMapperName("%sMapper"); //mapper接口名称
              gc.setXmlName("%sMapper");//mapp.xml文件名称
              gc.setServiceName("%sService");//service接口名称
              gc.setServiceImplName("%sServiceImpl");//service接口实现类名称
              gc.setControllerName("%sController");//controller类名称
              mpg.setGlobalConfig(gc);

              // 数据源配置
              DataSourceConfig dsc = new DataSourceConfig();
              dsc.setDbType(DbType.MYSQL);
              dsc.setTypeConvert(new MySqlTypeConvert() {
                     /*自定义数据库表字段类型转换【可选】*/

                     @Override
                     public DbColumnType processTypeConvert(String fieldType) {
                            System.out.println("转换类型：" + fieldType);
                            return super.processTypeConvert(fieldType);
                     }
              });

              dsc.setDriverName("com.mysql.jdbc.Driver");
              dsc.setUrl("jdbc:mysql://localhost:3306/wanghong?useUnicode=true&amp;characterEncoding=UTF-8&amp;" +
                      "generateSimpleParameterMetadata=true");
              dsc.setUsername("root");
              dsc.setPassword("fxf217");
              mpg.setDataSource(dsc);

              // 策略配置
              StrategyConfig strategy = new StrategyConfig();
              // strategy.setCapitalMode(true);// 全局大写命名 ORACLE 注意
              strategy.setTablePrefix("t_");// 此处可以修改为您的表前缀,去除表前缀t_ 如t_worker最后会生成实体名称为Worker
              strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
              strategy.setInclude("t_forum_image"); // 需要生成的表
              // strategy.setExclude(new String[]{"test"}); // 排除生成的表
              mpg.setStrategy(strategy);

              // 包配置
              PackageConfig pc = new PackageConfig();
              pc.setParent("");
              //java文件存放地址
              String javaUrl = "com.aimei.user.";
              //pc.setModuleName(javaUrl+"test");
              pc.setController(javaUrl + "controller");//设置controller存储位置
              pc.setEntity(javaUrl + "entity");
              pc.setMapper(javaUrl + "mapper");
              pc.setService(javaUrl + "service");
              pc.setServiceImpl(javaUrl + "service.impl");
              //静态文件存放地址
              //String staticUrl = "src.main.resources.";
              pc.setXml( "mapper");
              mpg.setPackageInfo(pc);

              // 执行生成
              mpg.execute();
       }
}
